home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / TP062892.ARJ / 06-28-92.TPC
Text File  |  1992-06-28  |  48KB  |  1,624 lines

  1.  
  2. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3.  
  4. Conference 4
  5. Date       01-01-00 00:00:00
  6. From       
  7. To         
  8. Subject    
  9.  
  10.  
  11. --- WM v2.01/92-0100
  12.  * Origin: A.C.E. of Spades (615)383-4381 The B.A.N. board (1:116/33)
  13.  * Tossed by SFToss v1.00b on 92/04/09  12:01:00
  14.  
  15. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  16.  
  17. Conference 4
  18. Date       06-19-92 00:08:00
  19. From       Norbert Igl
  20. To         Peter Beeftink
  21. Subject    Find Error ?
  22.  
  23.  
  24.  
  25.  
  26. Hello Peter,
  27.  
  28.    ≡  File  Edit  Search  Run  Compile  Deb
  29.  ╔═[■]══════════ ┌──────────────────────┐ ═
  30.  ║               │ Find...              │
  31.  ║               │ Replace...           │
  32.  ║               │ Search again         │
  33.  ║               │ Go to line number... │
  34.  ║               │ Find procedure...    │
  35.  ║               │ Find error...        │   <<<<<<<<< Here it is (:-))
  36.  ║               └──────────────────────┘
  37.  
  38.  Bye from Germany, Norbert
  39.  
  40. --- GoldED 2.40
  41.  * Origin:  May the source be with you... (2:241/5300.3)
  42.  * Tossed by SFToss v1.00b on 92/06/20  12:16:48
  43.  
  44. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  45.  
  46. Conference 4
  47. Date       06-21-92 00:56:15
  48. From       
  49. To         
  50. Subject    
  51.  
  52.  --- D'Bridge 1.30/001666
  53.  * Origin: Telcom Central (1:135/23)
  54.  * Tossed by SFToss v1.00b on 92/06/21  07:11:30
  55.  
  56. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  57.  
  58. Conference 4
  59. Date       06-20-92 10:34:00
  60. From       Norbert Igl
  61. To         Erik Giberti
  62. Subject    Little Problem
  63.  
  64.  
  65.  
  66. Hello Erik,
  67.  
  68.  EG> I am having a little difficulty with loops though, mabey you could help me.
  69.  
  70.  EG> This is how I have it set up...
  71.  
  72.  EG> A variable is given a Char definition, and the value is equal to
  73.  EG> 'Y','y','N' or 'n'
  74.  
  75.  EG> then in the following a problem results...
  76.  
  77.  EG> if Letter = 'Y' or 'y' then
  78.  EG>   Screen1
  79.  EG> if Letter = 'N' or 'N' then
  80.  EG>   Screen2
  81.  EG> else
  82.  EG>   Screen3
  83.  
  84.  EG> This didnt seem to work... So I took out the or statements in the first two
  85.  
  86.  
  87.    If ..
  88.      then
  89.      else      .... works fine for simple choices..
  90.  
  91.    Try Case.. of for multiple choice :
  92.  
  93.  
  94.    Case Letter of
  95.  
  96.     'Y','y' : Screen1;
  97.     'N','n' : Screen2;
  98.     else      Screen3;
  99.  
  100.    end;
  101.  
  102.   Gruss aus Bonn, Norbert
  103.  
  104. --- GoldED 2.40
  105.  * Origin:  where's the beef ? ... at (2:241/5300.3)
  106.  * Tossed by SFToss v1.00b on 92/06/21  07:11:37
  107.  
  108. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  109.  
  110. Conference 4
  111. Date       06-21-92 23:37:07
  112. From       Mark Ouellet
  113. To         James Cook
  114. Subject    Re: Turbo 6
  115.  
  116.  
  117.     On 09 Jun 92, you, James Cook, of 1:387/307.0 wrote...
  118.  
  119.  -=>> Quoting Mark Ouellet to Shawn Osborn <=-
  120.  
  121.  MO>> Any ways here are the 6.0 features:
  122.  
  123.  MO>> The IDE:
  124.  MO>> Written using Turbo Vision which supports
  125.  MO>> keyboard, mouse, multiple overlapping windows,
  126.  MO>> scroll bars, dialog boxes, pull down menus and more.
  127.  
  128.  JC> Mark,
  129.  JC> A little known fact is that the IDE for Turbo Pascal 6.0 is written
  130.  JC> in C.
  131.  
  132. James,
  133.         I have serious doubts about this one, that PART of
  134. it were written in C no problems but since Turbo Vision for
  135. C came out much later than TP 6.0 I would suspect the actual
  136. Turbo Vision code was in TP.
  137.  
  138.         Best regards,
  139.         Mark Ouellet.
  140.  
  141.  
  142.  
  143. --- ME2
  144.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  145.  * Tossed by SFToss v1.00b on 92/06/25  11:40:35
  146.  
  147. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  148.  
  149. Conference 4
  150. Date       06-21-92 23:40:10
  151. From       Mark Ouellet
  152. To         Vince Laurent
  153. Subject    Re: SBlaster...
  154.  
  155.  
  156.     On 10 Jun 92, you, Vince Laurent, of 1:382/10.0 wrote...
  157.  
  158.  |=>>           Thanks, I might take a look but I prefer Freq'ing as
  159.  |=>>   logging on as a human caller often makes the difference
  160.  |=>>   between spending a few bucks for a file and a large LD bill.
  161.  
  162.  VL> {$Change of subject....}
  163.  VL> 
  164.  VL> The BBS I call to get mail has been having problems with getting the
  165.  VL> mail regularly...so I have missed a few days here and there.  Did you
  166.  VL> ever get the WHOLE adlib/sb program that was posted? Did you ever find
  167.  VL> any more code anywhere?
  168.  
  169. Vince,
  170.         Yes I did, in fact I tried writing you to know
  171. whether you got it all or not. I beleive it was reposted in
  172. 3 messages on the last attempt, it was also posted in other
  173. echoes as I remember. Let me know if you want it.
  174.  
  175.         Best regards,
  176.         Mark Ouellet.
  177.  
  178.  
  179.  
  180. --- ME2
  181.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  182.  * Tossed by SFToss v1.00b on 92/06/25  11:40:35
  183.  
  184. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  185.  
  186. Conference 4
  187. Date       06-21-92 23:43:30
  188. From       Mark Ouellet
  189. To         David Masaki
  190. Subject    RE: Clearing keyboard buffer
  191.  
  192.  
  193.     On 09 Jun 92, you, David Masaki, of 1:345/27.0 wrote...
  194.  
  195.  MO>>         Actually I prefer his...Though the "if keypressed
  196.  MO>> then" is not needed his version has the added bonus of not
  197.  MO>> requireing any temporary variables like this:
  198.  MO>> 
  199.  MO>>         while keypressed do if readkey=#0 then;
  200.  MO>> 
  201.  MO>> The "if readkey=" part satisfies TP that the result of the
  202.  MO>> function is being used and so this will work both on TP 6.0
  203.  MO>> and 5.5 while using:
  204.  MO>> 
  205.  MO>>         while keypressed do readkey;
  206.  
  207.  DM> Yeah, I didn't realize the purpose of the comparison of 0 to readkey 
  208.  
  209.  DM> when I first read his message.  But is it really essential to save a 
  210.  
  211.  DM> variable in this case?
  212.  
  213.         Woah, I allmost missed that one, I just deleted a
  214. whole paragraph having realised you wrote "SAVE" and not
  215. "HAVE" in that last sentence ;-)
  216.  
  217.         NO it is not essential to save a variable in this
  218. case but most programmers will try to limit the number of
  219. dummy variables they use. In this case it might even make
  220. more sens to use your other proposed solution and simply
  221. create a procedure called ClearKeyboard. In fact it makes
  222. sens both in saving code and variables and increases
  223. readability of the code.
  224.  
  225.  
  226.  
  227.  DM> I took a computer science class last year, and
  228.  DM> when I used a while instead of a for to save a variable, I was told to 
  229.  
  230.  DM> use the for instead because it was easier to read.  I was passed a 
  231.  DM> variable in a function and was using it as a counter, and since it was 
  232.  
  233.  DM> already initialized, I'd either do something like for i := i downto 0 or 
  234.  
  235.  DM> for j := downto 0 (either initializing a variable to itself, or using 
  236.  
  237.  DM> another variable).  I didn't think using a while was hard to understand, 
  238.  
  239.  DM> but in this case with the keyboard buffering it is a bit more complex 
  240.  
  241.  DM> than I think it needs to be.  I guess it's just one of those few quirks 
  242.  
  243.  DM> in Pascal that's neat to take advantage of.  C has a lot of these and 
  244.  
  245.  DM> consequently has been given a reputation of being cryptic--but only if 
  246.  
  247.  DM> the programmer makes it so. 
  248.  DM> ------------------------------------
  249.  
  250. David,
  251.         Actually each repetitive-construct has it's place.
  252. The reason your teacher wanted you to use a "for" instead of
  253. a "while" is probably that your repetition had a defined
  254. number of cycles.
  255.  
  256.         In general if you know beforehand how many times to
  257. loop you use a "for" if the number of cycles is undefined
  258. you use a "while" or a "repeat-until".
  259.  
  260. You loop FOR a predetermined number of times
  261.  
  262. OR
  263.  
  264. You loop WHILE a certain condition is true
  265.  
  266. OR
  267.  
  268. You REPEAT a loop UNTIL a certain condition is true.
  269.  
  270.         Of course, if the language doesn't have a "FOR"
  271. construct a "while" or any equivalent method can be used. In
  272. fact my teacher once forced us to produce the same program
  273. using each construct so that we could notice the difference
  274. between each of them such as the difference between "while"
  275. and "repeat-until", the condition being false to begin with,
  276. the "while" will never execute while the "repeat-until" will
  277. ALLWAYS execute at least once no matter what the initial
  278. state.
  279.  
  280.         As a last note, modifying a "for"'s variable is
  281. usually seen as a bad practice since some languages may
  282. introduce side-effects when such a practice is used.
  283.  
  284.         Best regards,
  285.         Mark Ouellet.
  286.  
  287.  
  288. --- ME2
  289.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  290.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  291.  
  292. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  293.  
  294. Conference 4
  295. Date       06-22-92 00:05:04
  296. From       Mark Ouellet
  297. To         Joy Mukherjee
  298. Subject    Re: Compressing Binary Sorted Trees
  299.  
  300.  
  301.     On 10 Jun 92, you, Joy Mukherjee, of 1:387/255.625 wrote...
  302.  
  303.  JM> Have you seen Algorithms by Sedgewick?  It has algorithms only, but I 
  304.  
  305.  JM> used it to create the Red-Black trees quite easily and they are slightly 
  306.  
  307.  JM> better than AVL trees (supposedly).  I have typed up some source if you 
  308.  
  309.  JM> are interested in it.  Its in VAX pascal, but you should have no problem 
  310.  
  311.  JM> converting it.
  312.  
  313. Joy,
  314.         I am in deed interrested in this code, in fact if
  315. you could also supply me with an ISBN number for the Sedgewick
  316. book it would be most helpfull.
  317.  
  318.         Best regards,
  319.         Mark Ouellet.
  320.  
  321.  
  322.  
  323. --- ME2
  324.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  325.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  326.  
  327. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  328.  
  329. Conference 4
  330. Date       06-22-92 00:08:56
  331. From       Mark Ouellet
  332. To         Rolf Thomassen
  333. Subject    Re: Clearing keyboard buffer
  334.  
  335.  
  336.     On 11 Jun 92, you, Rolf Thomassen, of 2:234/11.0 wrote...
  337.  
  338.  RT> Hej Mark!
  339.  RT> 
  340.  RT> Onsdag 03. Juni 1992 skriver Mark Ouellet til David Masaki:
  341.  RT> 
  342.  RT> 
  343.  MO>>         while keypressed do if readkey=#0 then;
  344.  
  345.  MO>> The "if readkey=" part satisfies TP that the result of the
  346.  MO>> function is being used and so this will work both on TP 6.0
  347.  MO>> and 5.5 while using:
  348.  
  349.  MO>>         while keypressed do readkey;
  350.  
  351.  MO>> allthough a bit shorter will require the {$X+} compiler
  352.  MO>> directive which is available in TP 6.0> only.
  353.  
  354.  RT> Why not just use this:
  355.  RT> 
  356.  RT> PROCEDURE ClearKeyBuffer;
  357.  RT> BEGIN
  358.  RT> IF KeyPressed THEN
  359.  RT> WHILE ReadKey <> #0 DO ;
  360.  RT> END;
  361.  RT> 
  362.  RT> And you dont have to use the {$X+} directive
  363.  
  364. Rolf,
  365.         If you try it you will see why ;-)
  366.  
  367. And hit a few FUNCTION KEYS while trying it.
  368.  
  369. In fact here is an example program:
  370.  
  371. =-==-=-=-==-=-=-=-=-=-=-=- cut here -=-=-=--=-==-=-=-=-
  372. program TestReadKey;
  373. uses crt;
  374. var
  375.     OurKey : char;
  376.     DosOutput : text;
  377.  
  378.     procedure ClearKeyboard;
  379.     begin
  380.         if keypressed then
  381.             while readkey <> #0 do;
  382.     end;
  383.  
  384.     procedure MyClearKeyboard;
  385.     begin
  386.         while keypressed do if readkey = #0 then;
  387.     end;
  388.  
  389. begin
  390.  
  391.     assign(DosOutput,'');    {So output can be sent to file}
  392.     rewrite(DosOutput);        {with redirection '>' since CRT}
  393.                             {disables redirection we have to}
  394.                             {reassign a text variable to the}
  395.                             {standard output}
  396.  
  397.     writeln('Hit a few function-keys');
  398.     writeln(DosOutput,'Hit a few function-keys');
  399.     delay(15000);    {15 second delay, Enough time to}
  400.                     {fill the buffer with a few keystrokes}
  401.     ClearKeyboard;
  402.  
  403.     while keypressed do begin
  404.         OurKey := readkey;
  405.         writeln(DosOutput, '''',OurKey,'''',Ord(OurKey));
  406.     end;
  407.     writeln(DosOutput, '===============================================');
  408.     writeln(DosOutPut,'Hit a few function-keys');
  409.     writeln('Hit a few function-keys');
  410.     delay(15000);    {Again 15 second delay}
  411.     MyClearKeyboard;
  412.     while keypressed do begin
  413.         OurKey := readkey;
  414.         writeln(DosOutput, '''',OurKey,'''',Ord(OurKey));
  415.     end;
  416.     writeln(DosOutput, '===============================================');
  417. end.
  418. =-=-=-=--=-=-=-=-=-=-=-=-=-- cut here -=-=-=-=--==-=--==-=-
  419.  
  420. And here are the results hitting F1,3,5,7,9 then F2,4,6,8,10
  421. in both cases.
  422.  
  423. --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  424. Hit a few function-keys
  425. ';'59
  426. '
  427.  
  428.  
  429. --- QM v1.00
  430.  * Origin:  (1:240/1.4)
  431.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  432.  
  433. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  434.  
  435. Conference 4
  436. Date       06-23-92 19:57:29
  437. From       Mark Ouellet
  438. To         Gavin Campbell
  439. Subject    Re: Keyboard Buffer
  440.  
  441.  
  442.     On 09 Jun 92, you, Gavin Campbell, of 1:250/801.0 wrote...
  443.  
  444.  GC> Does anyone know how to stick keys into the keyboard buffer so that
  445.  GC> the next readkey command will pick it up.  Help please!!!
  446.  
  447. Gavin,
  448.         Look at Int 16 function 5 I think ??? And DOS will
  449. actually do it for you, much safer than playing around with
  450. the buffer by your own.
  451.  
  452.         Best regards,
  453.         Mark Ouellet.
  454.  
  455.  
  456.  
  457. --- ME2
  458.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  459.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  460.  
  461. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  462.  
  463. Conference 4
  464. Date       06-23-92 20:27:59
  465. From       Mark Ouellet
  466. To         BRIAN PAPE
  467. Subject    RE: CLEARING KEYBOARD BUF
  468.  
  469.  
  470.     On 11 Jun 92, you, BRIAN PAPE, of 618.0 wrote...
  471.  
  472.  ->> GG>   While keypressed do while readkey = #0 do;
  473.  
  474.  BP> The problem with that is if READKEY = #0 (as in an extended keystroke),
  475.  BP> it will sit in the second while loop doing nothing- forever.
  476.  BP> 
  477.  BP> It should probably be written:
  478.  BP> While keypressed do if readkey=#0 then;
  479.  BP> 
  480.  BP> which will work
  481.  
  482. Exactly, probably even better to make it a procedure:
  483.  
  484. procedure ClearKeyboard;
  485. begin
  486.         while keypressed do if readkey=#0 then;
  487. end;
  488.  
  489.  BP> --- Mosaic v1.00
  490.  BP> + Origin: "Universal Worlds" -= The Worlds Of Astronomy & Science =-
  491.  BP> (618) 931-8226
  492.  
  493. BRIAN,
  494.         BTW what is your adress ??? it seems to be missing
  495. from your origin line.
  496.  
  497.         Best regards,
  498.         Mark Ouellet.
  499.  
  500.  
  501.  
  502. --- ME2
  503.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  504.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  505.  
  506. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  507.  
  508. Conference 4
  509. Date       06-23-92 20:33:20
  510. From       Mark Ouellet
  511. To         BRIAN PAPE
  512. Subject    Re: XXX
  513.  
  514.  
  515.     On 11 Jun 92, you, BRIAN PAPE, of 618.0 wrote...
  516.  
  517.  BP> ...
  518.  BP> var
  519.  BP> ch:char;
  520.  BP> a:array[1..10] of char;
  521.  BP> i:byte;
  522.  BP> begin
  523.  BP> i:=1;
  524.  BP> while (i<10) and (ch<>#13) do
  525.      ^^^^^^^^^^^^^^^^^^^^^^^^^^    will allways input 9
  526.                                    caracters.
  527.  BP> begin
  528.  BP> a[i]:=readkey;
  529.  BP> write('x');
  530.  BP> inc(i);
  531.  BP> end;
  532.  BP> end.
  533.  
  534.  BP> * Origin: "Universal Worlds" -= The Worlds Of Astronomy & Science =- 
  535.  
  536.  BP> (618) 931-8226
  537.  
  538. BTW BRIAN,
  539.         what is your adress??, it seems to be missing from
  540. your origin line.
  541.  
  542.         Best regards,
  543.         Mark Ouellet.
  544.  
  545.  
  546.  
  547. --- ME2
  548.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  549.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  550.  
  551. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  552.  
  553. Conference 4
  554. Date       06-23-92 20:57:55
  555. From       Mark Ouellet
  556. To         Gerald Gutierrez
  557. Subject    Re: Find Error ?
  558.  
  559.  
  560.     On 14 Jun 92, you, Gerald Gutierrez, of 1:153/715.5 wrote...
  561.  
  562.  GG> Lately I've been having a little trouble with some source that I'm 
  563.  GG> working on, and I thought that I might be able to find some use for the 
  564.  
  565.  GG> "Find Error" option in the pulldowns of TP6's IDE, however I don't seem 
  566.  
  567.  GG> to be able to get this working. The reply I always get after entering an 
  568.  
  569.  GG> address is simply "Error Address Not Found". Ideas ?
  570.  
  571. Gerald,
  572.         force a BUILD of ALL units and be sure to activate
  573. ALL debugging options. Also make sure the code does not
  574. contain compiler directives that might override the
  575. settings.
  576.  
  577.         Best regards,
  578.         Mark Ouellet.
  579.  
  580.  
  581.  
  582. --- ME2
  583.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  584.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  585.  
  586. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  587.  
  588. Conference 4
  589. Date       06-23-92 21:38:01
  590. From       Mark Ouellet
  591. To         David G. Edwards
  592. Subject    Re: Find Error ?
  593.  
  594.  
  595.     On 16 Jun 92, you, David G. Edwards, of 1:370/60.5 wrote...
  596.  
  597.  DG> BTW, is anyone using Borland's newly-acquired version control system?
  598.  
  599. David,
  600.         could you give me more details on this ???
  601.  
  602.         Best regards,
  603.         Mark Ouellet.
  604.  
  605.  
  606.  
  607. --- ME2
  608.  * Origin: Governements, Proof of Peter's principle (Fidonet 1:240/1.4)
  609.  * Tossed by SFToss v1.00b on 92/06/25  11:40:36
  610.  
  611. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  612.  
  613. Conference 4
  614. Date       06-24-92 21:29:00
  615. From       Norbert Igl
  616. To         BRIAN PAPE
  617. Subject    SAVE GRAPHICS SCREEN
  618.  
  619.  
  620.  
  621. Hello BRIAN,
  622.  
  623.  BP> { no error checking }
  624.  
  625.         and no syntax checking, too... (:-(
  626.  
  627.  BP> var
  628.  BP>   f:file;
  629.  BP> begin
  630.  BP>   assign(f,'FOO.DAT');
  631.  BP>   rewrite(f);
  632.  
  633.       must read : Rewrite(F,1); ...
  634.  
  635.  BP>   blockwrite(f,ptr($B800),80*25*2);
  636.  
  637.      'cause this will write 80*25*2 * 128 Bytes !!!
  638.  
  639.  BP> end.
  640.  
  641.    ..btw, ever thought about CLOSING a file ?
  642.  
  643.  BP> { this would save a text screen including attributes }
  644.  
  645.      no, it won't! Gives you a 0-byte file....
  646.  
  647.  BP> To save a graphics screen containing more than 64k of data you would
  648.  BP> need to use multiple blockwrites because the max it can write at a time
  649.  BP> is 64k
  650.  
  651.   ...maybe there must be some techniques to change the graphic-pages
  652.      before writeing to a file, while in g-modes using more than 64k  ?
  653.      Remeber : (E)VGA segment for graphmode is $A000:0..$A000:FFFF.
  654.  
  655.   Norbert
  656.  
  657. --- GoldED 2.40
  658.  * Origin:  where's the beef ? ... at (2:241/5300.3)
  659.  * Tossed by SFToss v1.00b on 92/06/26  20:20:36
  660.  
  661. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  662.  
  663. Conference 4
  664. Date       06-24-92 21:15:00
  665. From       Norbert Igl
  666. To         John Clements
  667. Subject    UNIX-style TimeStamp
  668.  
  669.  
  670.  
  671.  
  672. Hello John,
  673.  
  674.  JC> Does anyone know how to process a UNIX-style TimeStamp, of type LongInt?!
  675.  JC> I have a need for it, but don't know the right processes for it...
  676.  
  677.  
  678. Unit UnixDate;
  679.  
  680. (***************************************************************************)
  681. (* UNIX DATE Version 1.00                                                  *)
  682.  
  683. (* This unit provides access to UNIX date related functions and procedures *)
  684.  
  685. (* A UNIX date is the number of seconds from January 1, 1970. This unit    *)
  686.  
  687. (* may be freely used. If you modify the source code, please do not        *)
  688.  
  689. (* distribute your enhancements.                                           *)
  690.  
  691. (* (C) 1991 by Brian Stark.                                                *)
  692.  
  693. (* A programming release from Desert Fox Productions                       *)
  694.  
  695. (* FidoNet 1:289/3.8 + Columbia, MO - USA                                  *)
  696.  
  697. (* Hatched via Pascal24 FileNetwork Germany by M.Mucko (2:242/94)          *)
  698.  
  699. (* ----------------------------------------------------------------------- *)
  700.  
  701. (* bstark@pro-aasgard.cts.com                                              *)
  702.  
  703. (* brian.stark@p8.f3.n289.z1.fidonet.org                                   *)
  704.  
  705. (***************************************************************************)
  706.  
  707. INTERFACE
  708. Uses
  709.    DOS;
  710. Function  GetTimeZone : ShortInt;
  711.   { Returns the value from the enviroment variable "TZ". If not found, UTC is
  712.  
  713.     assumed, and a value of zero is returned}
  714.  
  715. Function  IsLeapYear(Source : Word) : Boolean;
  716.   {Determines if the year is a leap year or not}
  717.  
  718. Function  Norm2Unix(Y, M, D, H, Min, S : Word) : LongInt;
  719.   {Convert a normal date to its UNIX date. If environment variable "TZ" is
  720.    defined, then the input parameters are assumed to be in **LOCAL TIME**}
  721.  
  722. Procedure Unix2Norm(Date : LongInt; Var Y, M, D, H, Min, S : Word);
  723.   {Convert a UNIX date to its normal date counterpart. If the environment
  724.    variable "TZ" is defined, then the output will be in **LOCAL TIME**}
  725.  
  726. Const
  727.   DaysPerMonth :
  728.     Array[1..12] of ShortInt = (031,028,031,030,031,030,031,031,030,031,030,031)
  729.  
  730.   DaysPerYear  :
  731.     Array[1..12] of Integer  = (031,059,090,120,151,181,212,243,273,304,334,365)
  732.  
  733.   DaysPerLeapYear :
  734.     Array[1..12] of Integer  = (031,060,091,121,152,182,213,244,274,305,335,366)
  735.  
  736.  
  737.   SecsPerYear      : LongInt  = 31536000;
  738.   SecsPerLeapYear  : LongInt  = 31622400;
  739.   SecsPerDay       : LongInt  = 86400;
  740.   SecsPerHour      : Integer  = 3600;
  741.   SecsPerMinute    : ShortInt = 60;
  742.  
  743. IMPLEMENTATION Function GetTimeZone : ShortInt;
  744. {}
  745. Var
  746.   Environment : String;
  747.   Index : Integer;
  748. Begin
  749.   GetTimeZone := 0;                            {Assume UTC}
  750.   Environment := GetEnv('TZ');       {Grab TZ string}
  751.   For Index := 1 To Length(Environment) Do
  752.     Environment[Index] := Upcase(Environment[Index]);
  753.   If Environment =  'EST05'    Then GetTimeZone := -05; {USA EASTERN}
  754.   If Environment =  'EST05EDT' Then GetTimeZone := -06;
  755.   If Environment =  'CST06'    Then GetTimeZone := -06; {USA CENTRAL}
  756.   If Environment =  'CST06CDT' Then GetTimeZone := -07;
  757.   If Environment =  'MST07'    Then GetTimeZone := -07; {USA MOUNTAIN}
  758.   If Environment =  'MST07MDT' Then GetTimeZone := -08;
  759.   If Environment =  'PST08'    Then GetTimeZone := -08;
  760.   If Environment =  'PST08PDT' Then GetTimeZone := -09;
  761.   If Environment =  'YST09'    Then GetTimeZone := -09;
  762.   If Environment =  'AST10'    Then GetTimeZone := -10;
  763.   If Environment =  'BST11'    Then GetTimeZone := -11;
  764.   If Environment =  'CET-1'    Then GetTimeZone :=  01;
  765.   If Environment =  'CET-01'   Then GetTimeZone :=  01;
  766.   If Environment =  'EST-10'   Then GetTimeZone :=  10;
  767.   If Environment =  'WST-8'    Then GetTimeZone :=  08; {Perth, Western
  768. Austrailia}
  769.   If Environment =  'WST-08'   Then GetTimeZone :=  08;
  770. End; Function IsLeapYear(Source : Word) : Boolean;
  771. {}
  772. Begin
  773.   If (Source Mod 4 = 0) Then
  774.     IsLeapYear := True
  775.   Else
  776.     IsLeapYear := False;
  777. End; Function Norm2Unix(Y,M,D,H,Min,S : Word) : LongInt;
  778. {}
  779. Var
  780.   UnixDate : LongInt;
  781.   Index    : Word;
  782. Begin
  783.   UnixDate := 0;                                                 {initialize}
  784.   Inc(UnixDate,S);                                              {add seconds}
  785.   Inc(UnixDate,(SecsPerMinute * Min));                          {add minutes}
  786.   Inc(UnixDate,(SecsPerHour * H));                                {add hours}
  787.   (*************************************************************************)
  788.   (* If UTC = 0, and local time is -06 hours of UTC, then                  *)
  789.  
  790.   (* UTC := UTC - (-06 * SecsPerHour)                                      *)
  791.  
  792.   (* Remember that a negative # minus a negative # yields a positive value *)
  793.  
  794.   (*************************************************************************)
  795.   UnixDate := UnixDate - (GetTimeZone * SecsPerHour);            {UTC offset}
  796.   If D > 1 Then                                 {has one day already passed?}
  797.     Inc(UnixDate,(SecsPerDay * (D-1)));
  798.   If IsLeapYear(Y) Then
  799.     DaysPerMonth[02] := 29
  800.   Else
  801.     DaysPerMonth[02] := 28;                             {Check for Feb. 29th}
  802.   Index := 1;
  803.   If M > 1 Then For Index := 1 To (M-1) Do    {has one month already passed?}
  804.     Inc(UnixDate,(DaysPerMonth[Index] * SecsPerDay));
  805.   While Y > 1970 Do
  806.   Begin
  807.     If IsLeapYear((Y-1)) Then
  808.       Inc(UnixDate,SecsPerLeapYear)
  809.     Else
  810.       Inc(UnixDate,SecsPerYear);
  811.     Dec(Y,1);
  812.   End;
  813.   Norm2Unix := UnixDate;
  814. End; Procedure Unix2Norm(Date : LongInt; Var Y, M, D, H, Min, S : Word);
  815. {}
  816. Var
  817.   LocalDate : LongInt; Done : Boolean; X : ShortInt; TotDays : Integer;
  818. Begin
  819.   Y   := 1970; M := 1; D := 1; H := 0; Min := 0; S := 0;
  820.   LocalDate := Date + (GetTimeZone * SecsPerHour);         {Local time date}
  821.  (*************************************************************************)
  822.  (* Sweep out the years...                                                *)
  823.  
  824.  (*************************************************************************)
  825.   Done := False;
  826.   While Not Done Do
  827.   Begin
  828.     If LocalDate >= SecsPerYear Then
  829.     Begin
  830.       Inc(Y,1);
  831.       Dec(LocalDate,SecsPerYear);
  832.     End
  833.     Else
  834.       Done := True;
  835.     If (IsLeapYear(Y+1)) And (LocalDate >= SecsPerLeapYear) And
  836.        (Not Done) Then
  837.     Begin
  838.       Inc(Y,1);
  839.       Dec(LocalDate,SecsPerLeapYear);
  840.     End;
  841.   End;
  842.   (*************************************************************************)
  843.   M := 1; D := 1;
  844.   Done := False;
  845.   TotDays := LocalDate Div SecsPerDay;
  846.   If IsLeapYear(Y) Then
  847.   Begin
  848.     DaysPerMonth[02] := 29;
  849.     X := 1;
  850.     Repeat
  851.       If (TotDays <= DaysPerLeapYear[x]) Then
  852.       Begin
  853.         M := X;
  854.         Done := True;
  855.         Dec(LocalDate,(TotDays * SecsPerDay));
  856.         D := DaysPerMonth[M]-(DaysPerLeapYear[M]-TotDays) + 1;
  857.       End
  858.       Else
  859.         Done := False;
  860.       Inc(X);
  861.     Until (Done) or (X > 12);
  862.   End
  863.   Else
  864.   Begin
  865.     DaysPerMonth[02] := 28;
  866.     X := 1;
  867.     Repeat
  868.       If (TotDays <= DaysPerYear[x]) Then
  869.       Begin
  870.         M := X;
  871.         Done := True;
  872.         Dec(LocalDate,(TotDays * SecsPerDay));
  873.         D := DaysPerMonth[M]-(DaysPerYear[M]-TotDays) + 1;
  874.       End
  875.       Else
  876.         Done := False;
  877.       Inc(X);
  878.     Until Done = True or (X > 12);
  879.   End;
  880.   H := LocalDate Div SecsPerHour;
  881.     Dec(LocalDate,(H * SecsPerHour));
  882.   Min := LocalDate Div SecsPerMinute;
  883.     Dec(LocalDate,(Min * SecsPerMinute));
  884.   S := LocalDate;
  885. End;
  886.  
  887.  
  888. END.
  889.  
  890.  
  891.   Gruss aus Bonn, Norbert
  892.  
  893. --- GoldED 2.40
  894.  * Origin:  May the source be with you... (2:241/5300.3)
  895.  * Tossed by SFToss v1.00b on 92/06/26  20:20:36
  896.  
  897. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  898.  
  899. Conference 4
  900. Date       06-25-92 21:24:00
  901. From       Norbert Igl
  902. To         Jud Mccranie
  903. Subject    Dialing the phone
  904.  
  905.  
  906.  
  907.  JM> In TP, how can I make it dial a number on the modem?  I've never written
  908.  JM> anything that goes to the COM port before.  What I want to do is have
  909.  JM> the user pick a customer, hit a key, and the modem dials their phone #
  910.  
  911.  JM> so the user can then pick up the phone and talk to them.
  912.  
  913.   ".. do it my way" - F. Sinatra  =(;-)
  914.  
  915.   (* no error checking... *)
  916.  
  917.   function Dial( Nb:string; ComPort:Byte; ):Char;
  918.   Const  DialCmd = 'ATDT';
  919.          OnHook  = 'ATH';
  920.   Var    Modem   : Text;
  921.          UserKey,
  922.          ComNb   : Char;
  923.   begin
  924.     if (ComPort < 1) or ( ComPort > 4) then exit;
  925.     ComNb := CHAR( Byte('0') + ComPort );
  926.     Assign( Modem, 'COM'+ComNb );
  927.     ReWrite( Modem );
  928.     Repeat
  929.       Writeln( Modem , OnHook );
  930.       Delay( 500 );
  931.       Writeln( Modem , DialCmd, Nb);
  932.       UserKey := ReadKey;
  933.     Until UserKey <> ' ';       { Hit [SPACE] to redial ! }
  934.     Writeln( Modem ,  OnHook ); { switch the line to the handset ...}
  935.     Close ( Modem );
  936.     Dial := UserKey;    { see what key the user pressed... }
  937.   end;
  938.  
  939.   HTH,   Norbert
  940.  
  941. --- GoldED 2.40
  942.  * Origin:  May the source be with you... (2:241/5300.3)
  943.  * Tossed by SFToss v1.00b on 92/06/26  20:20:36
  944.  
  945. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  946.  
  947. Conference 4
  948. Date       06-25-92 22:09:34
  949. From       Dj Murdoch
  950. To         Chris Kaminski
  951. Subject    Re: Turbo Pascal vs. C
  952.  
  953.   CK> C (and C++) are excellent power languages.  They offer a closer working
  954.  CK> with the internal components of your computer.  It is also a rather
  955.  CK> difficult language to learn.  Once you learn in though, you can do some
  956.  CK> rather amazing things with it.  It is a very good graphics language and
  957.  CK> most authoring systems have been written in C.  It also uses assembly, and
  958.  
  959.  CK> can be even more powerful if used in conjunction.
  960.  
  961. In fact, the assembler built in to TP 6 is better than what you got in C compile
  962. s last time I looked.  (Current releases may be better, I'm not familiar with
  963. them.)  They generally required an external assembler to assemble the code,
  964. which meant it couldn't make references to any symbols known to the compiler.
  965.  The TP 6 compiler has a built in assembler which knows all the symbols that
  966. the compiler knows. 
  967.  
  968. I'd also challenge the idea that C is closer to the internal components of
  969. your computer than Pascal is.  I'd say the opposite is true, if you are talking
  970. about the 8086 family of computers and Turbo Pascal.  Take a look at the ugly
  971. way segmented pointers are handled in C compared to TP, for instance; look
  972. at the TP Mem and Port arrays for another example.  
  973.  
  974. I've read that the 8086 was designed under the assumption that Pascal would
  975. be the most commonly used high level language for it; that's why it has 4
  976. segment registers for stack, code, data, and heap, just like Pascal.  C was
  977. designed for a flat architecture, and segments don't fit it well. 
  978.  
  979.  
  980. --- Msg V3.2
  981.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  982.  * Tossed by SFToss v1.00b on 92/06/27  11:01:41
  983.  
  984. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  985.  
  986. Conference 4
  987. Date       06-26-92 22:22:06
  988. From       Trevor Carlsen
  989. To         Jud Mccranie
  990. Subject    Re: Turbo 6
  991.  
  992.  
  993.  JM> But you want to silence the 5.5 users.
  994.  
  995. Jud,  I want to see this debate of TP5.x V TP6 discontinued COMPLETELY.  
  996.  
  997. My reason?  It is pointless as TP5.x cannot be purchased and those who do
  998. not have TP have no option other than TP6.  The debate is also achieving nothing
  999. positive for the echo and is purely subjective.  If you have a beef about
  1000. TP6 take it up with Borland directly.  It is also obvious that the majority
  1001. of echo users want the thread to end.
  1002.  
  1003. Trevor Carlsen
  1004. Moderator.
  1005.  
  1006. --- TC-ED   v2.01  
  1007.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1008.  * Tossed by SFToss v1.00b on 92/06/27  15:01:04
  1009.  
  1010. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1011.  
  1012. Conference 4
  1013. Date       06-26-92 23:23:00
  1014. From       Trevor Carlsen
  1015. To         BRIAN PAPE
  1016. Subject    RE: CLEARING KEYBOARD BUF
  1017.  
  1018.  
  1019.  GG>   While keypressed do while readkey = #0 do;
  1020.  
  1021.  BP> The problem with that is if READKEY = #0 (as in an extended 
  1022.  BP> extended keystroke), it will sit in the second while loop 
  1023.  BP> doing nothing- forever.
  1024.  
  1025. No...look closely.  :-)
  1026.  
  1027. TeeCee
  1028.  
  1029.  
  1030.  
  1031. --- TC-ED   v2.01  
  1032.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1033.  * Tossed by SFToss v1.00b on 92/06/27  15:01:04
  1034.  
  1035. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1036.  
  1037. Conference 4
  1038. Date       06-27-92 15:17:39
  1039. From       Trevor Carlsen
  1040. To         Jeffrey Miyares
  1041. Subject    Command line
  1042.  
  1043.  
  1044.  MC>   Look up ParamCount and ParamStr ()...
  1045.  
  1046.  JM>   Can anyone give someone else help, or does everyone have
  1047.  JM> to tell them to look it up?  Come one, take a few seconds
  1048.  JM> and help someone.  What's the purpose of this echo if the
  1049.  JM> only way to learn is by NOT using the echo, but LOOKING UP
  1050.  JM> everything?  I hope I never have to ask a question about
  1051.  JM> Pascal on here.  I'll just look it up before I do and save
  1052.  JM> some people the time that it takes them to write 'look it
  1053.  JM> up' to me.
  1054.  
  1055. One of the rules of this echo is that it is not to be used as a replacement
  1056. for a manual.  Obviously this is meant to deter those who think that owning
  1057. stolen software is OK.
  1058.  
  1059. In the above message, Mike assumes that the user has a manual and IS helping
  1060. by letting him know what the relevant procedures/functions are. Once the user
  1061. knows THAT, nothing more is required as the manual and help system will deliver
  1062. with excellent examples.
  1063.  
  1064. TeeCee
  1065.  
  1066. --- TC-ED   v2.01  
  1067.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1068.  * Tossed by SFToss v1.00b on 92/06/27  15:01:04
  1069.  
  1070. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1071.  
  1072. Conference 4
  1073. Date       06-27-92 15:18:40
  1074. From       Trevor Carlsen
  1075. To         Nelson Vieira
  1076. Subject    Question
  1077.  
  1078.  
  1079.  NV> How is writeln able to accept any variable type...
  1080.  NV> ex:  writeln(string,integer,string,byte,boolean)
  1081.  
  1082.  NV> ... Trying to make my own DV writeln.. that will write 
  1083.  NV> directly to the DV video address memory..
  1084.  
  1085. The writeln procedure is actually compiled as calls to as many specialised
  1086. procedures as is needed.  Thus the necessary interpretation of what is required
  1087. is done at compile time and not at runtime as it would be with a "normal"
  1088. procedure.
  1089.  
  1090. What you need to do is use a TFDD (Text File Device Driver) to create a string
  1091. that you can then pass to your special routine.  It is some time now since
  1092. I posted such a beast so is the unit that will help. 
  1093.  
  1094. {$B-,D-,F-,I-,L-,N-,O-,R-,S-,V-}
  1095.  
  1096. unit filestr;
  1097.  
  1098. interface
  1099.  
  1100. uses dos;
  1101.  
  1102. function GetFstr(var f: text): string;
  1103. procedure OpenFStr(var f: text);
  1104.  
  1105. implementation
  1106.  
  1107. var
  1108.   FStrBuff     : string;
  1109.  
  1110. function GetFStr(var f: text): string;
  1111.   begin
  1112.     GetFStr     := FStrBuff;
  1113.     FStrBuff[0] := #0;
  1114.     TextRec(f).BufPos := 0;
  1115.   end; { GetFStr }
  1116.   
  1117. {$F+}
  1118. function FStrOpen(var f: TextRec):word;
  1119.   { This does nothing except return zero to indicate success }
  1120.   begin
  1121.     FStrOpen := 0;
  1122.   end; { FStrOpen }
  1123.   
  1124. function FStrInOut(var f: TextRec):word;
  1125.   begin
  1126.     FStrBuff[0] := chr(F.BufPos);  
  1127.     FStrInOut   := 0;
  1128.   end; { FStrInOut }  
  1129. {$F-}
  1130.  
  1131. procedure OpenFStr(var f: text);
  1132.   begin
  1133.     with TextRec(f) do begin
  1134.       mode      := fmClosed;
  1135.       BufSize   := Sizeof(buffer);
  1136.       OpenFunc  := @FStrOpen;
  1137.       InOutFunc := @FStrInOut;
  1138.       FlushFunc := @FStrInOut;
  1139.       CloseFunc := @FStrOpen;
  1140.       BufPos    := 0;
  1141.       BufEnd    := 0;
  1142.       BufPtr    := @FStrBuff[1];
  1143.       Name[0]   := #0;
  1144.     end; { with }
  1145.     FStrBuff[0] := #0;
  1146.     rewrite(f);
  1147.   end;  { AssignFStr }   
  1148.  
  1149. end.  { FileStr }
  1150.  
  1151. Now to use that unit all that is needed is for you to call the OpenFStr procedur
  1152. , that will open a TFDD.  When you write to the TFDD the string can then be
  1153. returned by a call to GetFStr.  If you want to make it even easier you can
  1154. write to the DV video whilst in the DD.  
  1155.  
  1156. Study TFDDs closely.  They have many uses and can save many hours of frustration
  1157.  
  1158.  
  1159. TeeCee
  1160.  
  1161.  
  1162. --- TC-ED   v2.01  
  1163.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1164.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1165.  
  1166. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1167.  
  1168. Conference 4
  1169. Date       06-27-92 15:24:17
  1170. From       Trevor Carlsen
  1171. To         Primus
  1172. Subject    Execute .Com Files In Pas
  1173.  
  1174.  
  1175.  OV> swapvectors;
  1176.  OV> exec('program.exe','/?');
  1177.  OV> swapvectors;
  1178.  
  1179.  P> No no no, it shall work like that boy, try this
  1180.  
  1181.  P> SwapVectors;
  1182.  P> Exec(GetEnv('COMSPEC'),' /C program.exe parameters');
  1183.  P> SwapVectors;
  1184.  
  1185. The method you are recommending is actually the slower and less efficient
  1186. of the two.  The method demonstrated by OV will work just fine PROVIDING program
  1187. exe is in the current directory.  Your method loads another copy of the command
  1188. processor and that is unnecessary in this case.
  1189.  
  1190. TeeCee
  1191.  
  1192. --- TC-ED   v2.01  
  1193.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1194.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1195.  
  1196. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1197.  
  1198. Conference 4
  1199. Date       06-27-92 09:29:54
  1200. From       Trevor Carlsen
  1201. To         Peter Beeftink
  1202. Subject    Heap maximum
  1203.  
  1204.  
  1205.  PB> {$M stacksize, heapmin, heapmax}
  1206.  
  1207.  PB> How can you determine (other than by trial and error) how
  1208.  PB> much heap size a particular program uses, and therefor set
  1209.  PB> the heapmax to a reasonable value. As the compiler sets it
  1210.  PB> by default to it's maximum value I would like to bring this
  1211.  PB> down.
  1212.  
  1213. As you - the program author - control what is on the heap and what is not,
  1214. it is up to you to arbitarily decide what are the best sizes to use. This
  1215. will involve educated guesses based on your knowledge of what your program
  1216. does. Unless you use the heap the best sizes are zero and zero!
  1217.  
  1218. TeeCee
  1219.  
  1220. --- TC-ED   v2.01  
  1221.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1222.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1223.  
  1224. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1225.  
  1226. Conference 4
  1227. Date       06-27-92 15:25:17
  1228. From       Trevor Carlsen
  1229. To         Brian Stark
  1230. Subject    Using the Port[] command...
  1231.  
  1232.  
  1233.  BS> Did I miss something, or is the Port[] command 
  1234.  BS> undocumented?? I don't see anything about it in 
  1235.  BS> the online help in TP v5.5, or my books.
  1236.  
  1237. pp 221 in the manual. (Reference Guide)  Sometimes my page numbers are different
  1238. so if 221 is not the page look under Port in the Index.
  1239.  
  1240. However it appears to have been overlooked in the on-line help. Incredible.
  1241.  
  1242. TeeCee
  1243.  
  1244. --- TC-ED   v2.01  
  1245.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1246.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1247.  
  1248. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1249.  
  1250. Conference 4
  1251. Date       06-27-92 10:32:49
  1252. From       Trevor Carlsen
  1253. To         Jim McNamee
  1254. Subject    Turbo Pascal 7
  1255.  
  1256.  
  1257.  JM> A flier from Waldensoftware arrived yesterday advertising Turbo Pascal 
  1258.  
  1259.  JM> The 25-words-or-less blurb describing this product said it
  1260.  JM> was an MS DOS language bundled with Turbo Vision.  Is TP7
  1261.  JM> something new, is this a printer's typo, or is it just old
  1262.  JM> wine in new bottles?
  1263.  
  1264. Interesting.  Could be that big software distributors have been advised that
  1265. release of TP7 is imminent and they are updating their promos.
  1266.  
  1267. Could also be just a typo!
  1268.  
  1269. TeeCee
  1270.  
  1271. --- TC-ED   v2.01  
  1272.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1273.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1274.  
  1275. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1276.  
  1277. Conference 4
  1278. Date       06-27-92 15:28:36
  1279. From       Trevor Carlsen
  1280. To         Peter Beeftink
  1281. Subject    Writing directly to disk sectors.
  1282.  
  1283.  
  1284.  TC> Look up truncate in the manual.
  1285.  
  1286.  PB> Cute, if the manual showed it I wouldn't ask it.   My manual
  1287.  PB> is "Using Turbo Pascal" by Michael Yester.
  1288.  
  1289. When you purchase TP it comes with a manual (3 volumes actually).  That was
  1290. what I was referring to. 
  1291.  
  1292. TeeCee
  1293.  
  1294. --- TC-ED   v2.01  
  1295.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1296.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1297.  
  1298. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1299.  
  1300. Conference 4
  1301. Date       06-27-92 11:41:19
  1302. From       Trevor Carlsen
  1303. To         Rolf Thomassen
  1304. Subject    Keyboard Buffer
  1305.  
  1306.  
  1307.  GL> try the following:
  1308.  GL>   WHILE KeyPressed DO Readkey;
  1309.  
  1310.  RT> And then you do the same mistake your self...
  1311.  
  1312. GL's method above is valid if TP6 is being used with extended syntax.
  1313.  
  1314. TeeCee
  1315.  
  1316. --- TC-ED   v2.01  
  1317.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1318.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1319.  
  1320. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1321.  
  1322. Conference 4
  1323. Date       06-27-92 11:44:29
  1324. From       Trevor Carlsen
  1325. To         Mike Melamed
  1326. Subject    X:xxx/xx.x format
  1327.  
  1328.  
  1329.  MM> Can some tell me how to use the above format? Is it a telephone 
  1330.  MM> number? A TEL-NET address? What is it???
  1331.  
  1332.  MM> Example:  1:459/29.2
  1333.  
  1334. It is a FidoNet node number. The 1 is the zone -
  1335.  1  = North America
  1336.  2  = Europe
  1337.  3  = Oceania
  1338.  4  = South America
  1339.  5  = Africa
  1340.  6  = Asia
  1341.  
  1342. 459 is the network, 29 is the node and if there is a decimal point number
  1343. it indicates that it is a point off a node.
  1344.  
  1345. TeeCee
  1346.  
  1347. --- TC-ED   v2.01  
  1348.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1349.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1350.  
  1351. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1352.  
  1353. Conference 4
  1354. Date       06-27-92 15:30:14
  1355. From       Trevor Carlsen
  1356. To         Chris Kaminski
  1357. Subject    WHY I HATE TURBO PASCAL 6
  1358.  
  1359.  
  1360.  CK> Well, if you are really that power hungry, try C or C++... It's better
  1361.  CK> language if you need a whole lot of power.  But if you want
  1362.  CK> to stick with Pascal, I'll tell you that Borland makes the
  1363.  CK> best Pascal ...
  1364.  
  1365. Chris, you appear to believe the common fallacy that C is the more powerful
  1366. language.  Whilst there may be some isolated things that are easier to do
  1367. in C, the reverse is also true.  Pascal is generally equal to or better than
  1368. C as far as speed goes and is usually better when exe size is the benchmark.
  1369.  
  1370. Obviously which compiler is being used is an important factor as some of the
  1371. highly optimising C compilers are quite good.  They seem to still trail a
  1372. good optimising Pascal compiler though.
  1373.  
  1374. If you disagree with the above why not define something that you can do better
  1375. in C than in Pascal (Turbo or Turbo compatible).
  1376.  
  1377. TeeCee
  1378.  
  1379.  
  1380. --- TC-ED   v2.01  
  1381.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1382.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1383.  
  1384. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1385.  
  1386. Conference 4
  1387. Date       06-27-92 16:30:11
  1388. From       Trevor Carlsen
  1389. To         Tony Nugent
  1390. Subject    Off line readers
  1391.  
  1392.  
  1393.  TN> I'm using Offline, just upgraded to v1.37 which is an improvement 
  1394.  TN> over v1.36 which would trunicate messages and replies
  1395.  TN> variously at 100, 150 and 200 lines.  The upgrade seems to
  1396.  TN> spit out anything over 300 lines.
  1397.  
  1398. I tried many, many different readers.  IMHO, none were any good.
  1399.  
  1400.  TN> The question is, what do you regard as a *decent* mail reader? 
  1401.  
  1402. TC-ED :-)
  1403.  
  1404.  TN> You use TC-ED v2.01  - your own reader?  Is it any good and is it 
  1405.  TN> generally available? 
  1406.  
  1407. Yes my own - but not available at this stage.  If I ever get the time to finish
  1408. it and polish it...  maybe.
  1409.  
  1410. TeeCee
  1411.  
  1412. --- TC-ED   v2.01  
  1413.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1414.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1415.  
  1416. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1417.  
  1418. Conference 4
  1419. Date       06-27-92 16:47:38
  1420. From       Trevor Carlsen
  1421. To         Alan Graff
  1422. Subject    Reading C++ records
  1423.  
  1424.  
  1425.  AG>           Byte 1: Char;
  1426.  AG>    Bytes 2 - 124: String;
  1427.  AG>    Bytes 125-128: Longint;
  1428.  AG>    Bytes 129-132: Longint;
  1429.  
  1430.  AG> The problem I am having is that the string from byte 2 to
  1431.  AG> 124 has no index to tell how long the string is...thus
  1432.  AG> giving a bad result when I try to blockread the record.
  1433.  AG> Does anyone know how I can blockread this record without
  1434.  AG> declaring the string as 123 separate characters?
  1435.  
  1436. The string will be an ASCIIZ string.  That is, it is nul terminated.  The
  1437. length can be determined by where the nul character is.
  1438.  
  1439. type
  1440.   YourRec = record
  1441.               FirstByte : byte;
  1442.               TheStr    : array[1..123] of char;
  1443.               Long1,
  1444.               Long2     : longint;
  1445.             end
  1446. var
  1447.   f : file of YourRec;
  1448.   r : YourRec;
  1449.   s : string[123];
  1450.  
  1451.  function Asc2Str(var s; max: byte): string;
  1452.    { Converts an ASCIIZ string to a Turbo Pascal string }
  1453.    { with a maximum length of max.                      }
  1454.    var starray  : array[1..255] of char absolute s;
  1455.        len      : integer;
  1456.    begin
  1457.      len        := pos(#0,starray)-1;                       { Get the length }
  1458.  
  1459.      if (len > max) or (len < 0) then               { length exceeds maximum }
  1460.  
  1461.        len      := max;                                  { so set to maximum }
  1462.  
  1463.      Asc2Str    := starray;
  1464.      Asc2Str[0] := chr(len);                                    { Set length }
  1465.  
  1466.    end;  { Asc2Str }
  1467.  
  1468.  
  1469. read(f,r);
  1470. s := Asc2Str(r.TheStr,123);
  1471.  
  1472. TeeCee
  1473.  
  1474.  
  1475. --- TC-ED   v2.01  
  1476.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1477.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1478.  
  1479. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1480.  
  1481. Conference 4
  1482. Date       06-27-92 17:04:40
  1483. From       Trevor Carlsen
  1484. To         Rich Veraa
  1485. Subject    Your problem
  1486.  
  1487.  
  1488.  TC> I cannot locate your exact problem but
  1489.  TC> it appears to be an out-of-range error
  1490.  TC> on the variable index.  Check that out carefully.
  1491.  
  1492.  RV> BINGO! A procedure using a variable indexed by index gets called 
  1493.  RV> outside the for loop that increments index...
  1494.  
  1495.  RV> I looked right past that a hundred times.
  1496.  
  1497. ERR_FUNC to the rescue once more!
  1498.  
  1499. TeeCee
  1500.  
  1501. --- TC-ED   v2.01  
  1502.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1503.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1504.  
  1505. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1506.  
  1507. Conference 4
  1508. Date       06-27-92 17:14:34
  1509. From       Trevor Carlsen
  1510. To         Kevin O'Donnell
  1511. Subject    Prime Number Unit
  1512.  
  1513.  
  1514.  KO>     I am trying to write a unit which will contain an unlimited number 
  1515.  
  1516.  KO> of prime numbers.  I want to declare the prime numbers as an ordinal 
  1517.  
  1518.  KO> type.  I already have approx. 8000 prime numbers (from 1 to 89000) but 
  1519.  
  1520.  KO> am having trouble declaring the type.
  1521.  
  1522. The best way is to create a bit map that you can store in a file and load
  1523. into an array on the heap.  That will allow you to instantly look up any number
  1524. between 0..524168 and determine if it is prime.  Here is an example of the
  1525. type of thing I mean.  With a little modification it should be perfect for
  1526. what you want.  
  1527.  
  1528. const
  1529.   max = 65519;
  1530. type
  1531.   flagArray = array[0..max div 8] of byte;
  1532.   fptr      = ^flagarray;
  1533.  
  1534. var
  1535.   flags : fptr;
  1536.   x,j   : word;
  1537.   total : word;
  1538.   f     : file of word;
  1539.  
  1540. function BitIsSet(var x; numb : longint): boolean;
  1541.   { Tests the numb bit in the bitmap array }
  1542.   var m: flagArray absolute x;
  1543.   begin
  1544.     BitIsSet := odd(m[numb shr 3] shr (numb and 7));
  1545.   end;
  1546.  
  1547. procedure SetBit(var x; numb: word);
  1548.   { Sets the numb bit in the bitmap array }
  1549.   var m: flagArray absolute x;
  1550.   begin
  1551.     m[numb shr 3] := m[numb shr 3] or (1 shl (numb and 7))
  1552.   end;
  1553.  
  1554. procedure ResetBit(var x; numb : longint);
  1555.   { Resets the numb bit in the bitmap array }
  1556.   var m: flagArray absolute x;
  1557.   begin
  1558.    m[numb shr 3] := m[numb shr 3] and not(1 shl (numb and 7));
  1559.   end;
  1560.  
  1561. begin
  1562.   assign(f,'e:\primes.dat');
  1563.   rewrite(f);
  1564.   total := 0;  
  1565.   new(flags);
  1566.   FillChar(flags^,sizeof(flags^),$ff);
  1567.   for x := 2 to (max shr 1) do
  1568.     if BitIsSet(flags^,x) then
  1569.       for j := x to (max div x) do
  1570.         ResetBit(flags^,x * j);
  1571.   for x := 1 to max do
  1572.     if BitIsSet(flags^,x) then
  1573.       write(f,x);
  1574.   close(f);
  1575. end.
  1576.  
  1577.  
  1578. --- TC-ED   v2.01  
  1579.  * Origin: The Pilbara's Pascal Centre (+61 91 732930) (3:690/644)
  1580.  * Tossed by SFToss v1.00b on 92/06/27  15:01:05
  1581.  
  1582. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1583.  
  1584. Conference 4
  1585. Date       06-27-92 07:40:28
  1586. From       Dj Murdoch
  1587. To         Russ Bellew
  1588. Subject    Re: Tp 6 ide
  1589.  
  1590.   RB> How can I make TP 6's IDE, by default, start all text 
  1591.  RB> searches and search and replaces (^QA) at the current 
  1592.  RB> cursor position (rather than at the top of the .PAS file)???
  1593.  
  1594. I don't think there's any way to do that.  Due to a bug, your preferences
  1595. always revert to the (dumb) defaults when it starts up.
  1596.  
  1597. --- Msg V3.2
  1598.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1599.  * Tossed by SFToss v1.00b on 92/06/27  20:59:20
  1600.  
  1601. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1602.  
  1603. Conference 4
  1604. Date       06-27-92 07:42:55
  1605. From       Dj Murdoch
  1606. To         John Giesbrecht
  1607. Subject    Re: TP 5.0 Heap Error function
  1608.  
  1609.   JG> function heapfunc(size : word) : integer; far; 
  1610.  
  1611. I know you know this, but the original poster might not: In TP 5.0, the "far;"
  1612. would be replaced by the compiler directive {$F+} before the function: 
  1613.  
  1614.  {$f+}
  1615.  function heapfunc(size : word) : integer; far; 
  1616.  
  1617. If other functions followed, it's generally a good idea to turn off the far
  1618. calls after the end.
  1619.  
  1620.  
  1621. --- Msg V3.2
  1622.  * Origin: Murdoch's_Point  - -   (1:249/99.5)
  1623.  * Tossed by SFToss v1.00b on 92/06/27  20:59:20
  1624.